package com.cdk8s.tkey.server.service.sys;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cdk8s.tkey.server.mapper.ISystemSobMapper;
import com.cdk8s.tkey.server.pojo.bo.sys.TSystemSob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * 服务实现类
 *
 * @author zlc
 * @date 9.5
 */
@Slf4j
@Service
public class SystemService {
//    @Resource
//    private ISystemUserMapper sysUserMapper;
    @Resource
    private ISystemSobMapper sysSobMapper;
//    @Resource
//    private ISystemOrgMapper sysOrgMapper;
//    @Resource
//    private ISystemMenuMapper sysMenuMapper;
//    @Resource
//    private ISystemButtonMapper sysButtonMapper;


//    public TSysUser qryOne(String account, Integer sob) {
//        QueryWrapper<TSysUser> qw = new QueryWrapper();
//        qw.eq("account", account);
//        qw.eq("sob", sob);
//        sysUserMapper.qryOne(account, sob);
//        return null;
//    }

    public List<TSystemSob> qrySobLst() {
        QueryWrapper<TSystemSob> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("is_delete", "0");
        List<TSystemSob> sobs = sysSobMapper.selectList(queryWrapper);
        return sobs;
    }

//    public List<TSystemOrg> qryOrgLst(String account, Integer sob) {
//        QueryWrapper<TSystemOrg> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("account", account);
//        queryWrapper.eq("sob", sob);
//        queryWrapper.eq("is_active", "0");
//        List<TSystemOrg> orgs = sysOrgMapper.selectList(queryWrapper);
//        return orgs;
//    }
//
//    public Result<SysData> qryOrgResouce(String username, Integer sob) {
//        // 查询用户所属组织
//        List<SystemOrg> memberOfOrgList = sysOrgMapper.qryOrgs(username, sob);
//        if (memberOfOrgList == null || memberOfOrgList.isEmpty()) {
//            LOG.error(ResultCode.BIZ00002.getMessage() + ", username:" + username);
//            return Result.err(ResultCode.BIZ00002);
//        }
//        SysData systemUser = new SysData();
//        systemUser.setMemberOfOrgList(memberOfOrgList);
//        SystemOrg currentSystemOrg = memberOfOrgList.get(0);
//        systemUser.setCurrentSystemOrg(currentSystemOrg);
//        List<SysSob> sobs = sysSobMapper.qrySobs(username);
//        // 查询sob
//        SysSob curSob = sobs.stream().filter(item -> item.getId().equals(sob)).findFirst().get();
//        systemUser.setSobList(sobs);
//        systemUser.setSobId(sob);
//        systemUser.setSobName(curSob.getSobName());
//        // 加载子机构
//        loadSubOrg(currentSystemOrg, systemUser, sob);
//        // 查询菜单
//        List<SystemMenuWeb> webMenus = buildSystemMenuWebList(username, currentSystemOrg.getOrgId(), sob);
//        if (webMenus == null || webMenus.isEmpty()) {
//            LOG.error(ResultCode.BIZ00003.getMessage() + ", username:" + username);
//            return Result.err(ResultCode.BIZ00003);
//        }
//        systemUser.setSystemMenuWebList(webMenus);
//        // 查询按钮
//        List<SystemButton> buttons = sysButtonMapper.qryButtons(username, currentSystemOrg.getOrgId(), sob);
//        systemUser.setSystemButtonList(buttons);
//        return Result.ok(systemUser);
//    }
//
//    /**
//     * 加载子机构
//     *
//     * @param currentSystemOrg
//     * @param sysDataDto
//     * @return
//     */
//    public void loadSubOrg(SystemOrg currentSystemOrg, SysData sysDataDto, Integer sob) {
//        // 查询子公司
//        List<SystemOrg> allFiliale = sysOrgMapper.qrySubOrgs(currentSystemOrg.getOrgId(), sob);
//        allFiliale.add(currentSystemOrg);
//        sysDataDto.setFilialeSystemOrgList(allFiliale);
//        String filialeSystemOrgIds = "";
//        for (SystemOrg org : allFiliale) {
//            filialeSystemOrgIds += "'" + org.getOrgId() + "',";
//        }
//        if (filialeSystemOrgIds.endsWith(",")) {
//            filialeSystemOrgIds = filialeSystemOrgIds.substring(0, filialeSystemOrgIds.length() - 1);
//        }
//        sysDataDto.setFilialeSystemOrgIds(filialeSystemOrgIds);
//        return;
//    }
//
//    /**
//     * @param account
//     * @param orgId
//     * @param sob
//     * @return
//     */
//    public List<SystemMenuWeb> buildSystemMenuWebList(String account, String orgId, int sob) {
//        // 加载登录用户的当前选中仓库的web端菜单权限
//        List<SystemMenuWeb> menuWebList = sysMenuMapper.qryMenus(account, orgId, sob);
//        // 一二级菜单重组，方便jsp页面一二层级渲染
//        List<SystemMenuWeb> menuList = new ArrayList<>();
//        for (SystemMenuWeb menu : menuWebList) {
//            if (menu.getMenuLevel() == 1) { // 如果是一级菜单
//                for (SystemMenuWeb childMenu : menuWebList) { // 查找该一级菜单下的所有二级子菜单
//                    if (childMenu.getMenuLevel() == 2 && childMenu.getParentMenuId().equals(menu.getMenuId())) {
//                        menu.getChildMenu().add(childMenu); // 往一级菜单里添加一个二级子菜单
//                    }
//                }
//                menuList.add(menu); // 经过组合的一二级菜单重新放入一个新的集合里
//            }
//        }
//        return menuWebList;
//    }
}
